Recent developments in data communications have created the need for increasing the amount and speed of data transmitted. As the volume of data communicated increases, there is an increased desired for greater transmission speeds over various media. One limitation to greater transmission speeds is the decreased reliability of data signals at high speeds. That is, high speed transmission of digital data is limited by the reliability of cost effective transmission media.
One approach for overcoming this limitation has been the use of multiple parallel data channels. Multiple parallel data channels allow transmission in parallel over multiple carriers and/or media rather than in series over a single transmission medium. The effective transmission speed is then approximately the product of the single channel rate and the number of multiple channels. Generally, this allows much higher transmission rates over conventional media but requires more transmission channels.
Digital communication networks are one place where higher transmission speeds are desirable. Data is often broken into smaller segments, or packetized, at a transmitting device before it is transmitted over the network. A receiving device reconstructs the packets to rebuild the data into its original form. The packets may be transmitted over multiple physical or logical channels from the transmitting device to the receiving device on the network.
Each channel may represent a different transmission path between two or more devices on the network. All channels may comprise the same transmission medium or each channel may comprise a different transmission medium. Channel media may include twisted pair, coaxial cable, fiber optic, and/or air.
Ideally, packet transmissions would be synchronized throughout the network. However, it is often impractical or impossible to synchronize data transmissions between multiple devices and over multiple channels. In many cases it may not be possible to provide a single synchronizing clock to all devices on the network.
Even with synchronous transmissions over multiple channels, the different physical and/or logical channels employed may cause data packets to become skewed or misaligned. Generally, in order to process the received data, the packets must be aligned by the receiving device.
Another problem with multi-channel transmission schemes is the inherent rate differences between clocks. That is, even clocks with the same specified frequency have small differences or errors over many cycles. Over time, these small errors may result in processing errors of data received over multiple channels. For instance, differences between the write clocks for each transmission channel and the read clock at the receiving side may result in skipping or corrupting data at the receiving side.
Accordingly, there is a need for a method and/or apparatus that can align the data received over multiple channels and match the frequencies of transmitting and receiving clocks.